package intersection;

import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;

public class Solution {
    public int[] intersection(int[] nums1, int[] nums2) {
//        HashSet<Integer> set =new HashSet<>();
//        for (int i = 0; i < nums2.length; i++) {
//            set.add(nums2[i]);
//        }
//        HashSet<Integer> res = new HashSet<>();
//        for (int i = 0; i < nums1.length; i++) {
//            if(set.contains(nums1[i])){
//                res.add(nums1[i]);
//            }
//        }
//        int[] arr = new int[res.size()];
//        int index = 0;
//        for (int v: res) {
//            arr[index++] = v;
//        }
//        return arr;

        // 双指针
        Arrays.sort(nums1);
        Arrays.sort(nums2);
        int i = 0;
        int j = 0;
        HashSet<Integer> set =new HashSet<>();
        while(i<nums1.length&&j<nums2.length){
            if(nums1[i] == nums2[j]){
                set.add(nums1[i]);
                i++;
                j++;
            }else if(nums1[i]<nums2[j]){
                i++;
            }else {
                j++;
            }
        }
        int index = 0;
        int res[] = new int[set.size()];
        for (int v: set) {
            res[index++] = v;
        }
        return res;
    }
}
